package router

import (
	"encoding/json"
	"fmt"

	"github.com/gin-gonic/gin"
)

//json解析时会根据标签把对应的json数据映射给结构体实例
type Info struct{
	Name string `json:"name"`
	Age  int  `json:"age"`
	IsStudent bool `json:"isStudent"`
	Prices []int `json:"prices"`
}

func JsonParams(r *gin.Engine){
	r.POST("/getRawData",func(ctx *gin.Context) {
		data,err := ctx.GetRawData()
		if err!=nil{
			//如果获取失败，这里进行错误处理
			fmt.Println("读取请求体数据出错")
		}

		//设置承接数据的容器，可以是map也可以是结构体
		myInfo := struct{
			Name string `json:"name"`
			Age  int  `json:"age"`
			IsStudent bool `json:"isStudent"`
			Prices []int `json:"prices"`
		}{}

		//我们从接口文档得知，请求体是json数据，于是转化为json对象
		err = json.Unmarshal(data,&myInfo)
		if err!=nil{
			fmt.Println("json解析出错")
		}else{
			fmt.Printf("获取到的数据为%#v\n",myInfo)
		}
	})
}